Tutorial Diagrama de Flujo (Factorial) [en python]
Tema | Diagramas de FlujoPython |
---|---|
Tipo | Tutoriales |
Material | TAMAN_C2.drawioTAMAN_C2.pdf |
Nota: En el tutorial de 🐍Conceptos básicos de Python se pueden repasar los temas de programacion de la primera clase.
Cálculo de un factorial
Para la tarea 1 es necesario calcular un factorial, para ello se puede partir de la siguiente expresión
Esta expresión puede generalizarse como;
Además, para la función factorial debemos evaluar dos casos específicos:
Por lo tanto, en Python crearemos una función para el factorial, que tome como parámetro el n
Las funciones permiten agrupar bloques de código y procesos complejos. Permiten tener parámetros y salidas. Generalmente son usadas para realizar acciones que se repitan en diferentes contextos.
Las funciones se declaran usando la palabra def , con la siguiente sintaxis:
def nombre_funcion(parametro_1,parametro_2,....,parametro_n):
bloque que se ejecuta
al llamar a la función
return resultado de llamar a la función
Por lo tanto:
def factorial(n):
Ahora, debemos evaluar cada uno de los casos del factorial, para ello, usamos un condicional if
def factorial(n):
if n==0:
elif n<:
else:
Para decirle a Python que la función debe retornar un valor, basta con usar la palabra return
def factorial(n):
if n==0:
return 1
elif n<:
else:
Para el caso donde n < 0:
def factorial(n):
if n==0:
return 1
elif n<:
return "ERROR"
else:
Por último, debemos hacer que la función calcule el factorial con la fórmula de la multiplicatoria, para ello, usaremos un ciclo for
Los ciclos for son acciones que se realizan repetidamente. En este caso queremos acumular la multiplicación de los números del 1 a n, por lo tanto:
resultado = 1 #Inicializamos el resultado en 1 porque la multiplicación por 1 no afecta el resultado
for i in range(1,n+1): #Esta linea declara el ciclo for. La variable i tomará los valores desde 1 hasta n
return resultado #retornamos el valor
resultado = 1 #Inicializamos el resultado en 1 porque la multiplicación por 1 no afecta el resultado
for i in range(1,n+1): #Esta linea declara el ciclo for. La variable i tomará los valores desde 1 hasta n
resultado = resultado*i
return resultado #retornamos el valor
Por ejemplo, cuando i es igual a 1, resultado es igual a 1
Cuando i es igual a 2, resultado igual a 1 * 2 = 2
Cuando i es igual a 3, resultado es igual a 1 * 2 * 3 = 6
Cuando i es igual a 4, resultado es igual a 1 * 2 * 3 * 4 = 24
El código completo se ve así:
def factorial(n):
if n==0:
return 1
elif n<:
return "ERROR"
else:
resultado = 1
for i in range(1,n+1):
resultado = resultado*i
return resultado
Diagrama de flujo del factorial
Los diagramas de flujo son una herramientra gráfica que facilita la conceptualización lógica de procesos. El flujo se representa con flechas. Por ejemplo:
En el anterior diagrama el código va de inicio a fin sin realizar ninguna acción. El símbolo ovalado representa el incicio y fin del programa. Un diagrama de flujo solo tiene un inicio y puede tener múltiples finales.
Ahora empezemos traduciendo el código de la función factorial, lo primero que tenemos que hacer es manejar la entrada del parámetro n, para ello, usamos un paralelogramo así:
Ahora harémos las condiciones del factorial, para ello usamos el siguiente símbolo:
Incorporando la primera condición, el diagrama se ve así:
El símbolo del rombo verifica que el número ingresado sea 0 y de ser así el programa retorna el valor de 1. Para retornar un valor se usa el mismo símbolo que se usa para los parámetros, un paralelogramo. Ahora el diagrama tiene dos finales, ambos se representan con el mismo símbolo.
Las formas del diagrama de flujo son parecidos a ladrillos legos, pueden ubicarse en diferentes sitios y conectarse. Para incluir las otras condiciones del factoria blasta con agregar otro rombo así:
En el diagrama anterior las dos condiciones eran muy cercanas y llevaban a la finalización del programa, el símbolo circular sirve para unir flujos (flechas) y se usó en este caso para mostrar que las dos opciones de n = 0 y n < 0 llegan a la terminación del programa.
Por último, debemos agregar el ciclo for para ello, usamos un hexágono que determine donde se comienza a iterar asi:
def factorial(n):
if n==0:
return 1
elif n<:
return "ERROR"
else:
resultado = 1
for i in range(1,n+1):
resultado = resultado*i
return resultado
El símbolo rectangular se usa para representar un proceso, por ejemplo, declarar una variable, realizar una suma, etc. En este caso se usó tanto para declara una variable como para acumular el valor de la multiplicatoria.
Note que las flechas del ciclo for tienen sentido lógico, es decir, mientras i se encuentre en el rango establecido se realizará la accion del rectangulo, pero cuando i deje de estar en el rango se ejcutará el código del paralelogramo, retornado el valor final.
Por último, usaremos la función que acabamos de crar en un script de Python, por ejemplo, si quisieramos encontrar el factorial de 5. Al momento de usar funciones que creamos anteriormente debemos usar el símbolo de rectangulo con dos líneas.
Por último, ¿que sucede si el diagrama de flujo ocupa mas de una página? Se debe colocar un símbolo de un pentagono indicando el fin y comienzo de la página asi:
Adjunto estará el archivo de draw.io usado para este tutorial asi como el resultado final de los diagramas exportado a pdf.
Resumen de figuras del diagrama de flujo
Símbolo
Significado
Entradas y salidas
Se usa para tomar una descición en el flujo. Representa los if's
1 entrada y 2 salidas, se debe indicar cual de las dos es la verdadera
Se usa para unir distintos flujos en uno solo.
Varias entradas y 1 salida. No se recomienda asignarle mas de 3 entradas
Se usa para ejecutar procesos complejos, generalmente para llamar funciones creadas por el usuario
1 entrada y 1 salida